package org.gd.hellojson.gson;

import javax.xml.bind.annotation.*;
import java.io.Serializable;
import java.util.Date;

/**
 * При добавлении нового события его ОБЯЗАТЕЛЬНО необходимо
 * зарегистрировать в сервисе тайминга и добавить в обработчик
 * событий!!! Ответственный за регистрацию события в сервисе
 * тайминга: <b>Пагурец Павел Сергеевич</b>. Ответственный
 * за добавления события в обработчик: <b>Элиосидзе Давид Гивиевич</b>.
 *
 * @author EliosidzeDG - Элиосидзе Давид Гивиевич
 * @since P24AB_1.0.12
 */
@XmlRootElement(name = "P24Event")
@XmlAccessorType(XmlAccessType.FIELD)
@SuppressWarnings("unused")
public class P24Event implements Serializable {

    /** Ид Системы заводиться в сервисе таймингов */
    @XmlAttribute
    private String systemId = null;
    /** Ид события */
    @XmlAttribute
    private String eventId = null;
    /** Уникальный идентификатор события */
    @XmlAttribute
    private String p24ref = null;
    /** Дата начала */
    @XmlAttribute
    private Date eventTime = null;
    /** Дата окончания */
    @XmlAttribute
    private Date endTime = null;
    /** ЛДАП сотрудка(если транзакция обучающая) */
    @XmlAttribute
    private String ldap = null;
    /** Статус prp-Создан cmt-Обработан err-ошибка (Если возможно необходима фиксация) */
    @XmlAttribute
    private String status = null;
    /** Ид пользователя(необходимо для регистрации платежей) */
    @XmlAttribute
    private String user_id = null;

    /**
     *
     * @param systemId Ид Системы заводиться в сервисе таймингов
     * @param eventId Ид события
     * @param p24ref Уникальный идентификатор события
     * @param eventTime Дата начала
     * @param ldap ЛДАП сотрудка(если транзакция обучающая)
     */
    public P24Event(String systemId, String eventId, String p24ref, Date eventTime, String ldap) {
        this.systemId = systemId;
        this.eventId = eventId;
        this.p24ref = p24ref;
        this.eventTime = eventTime;
        this.ldap = ldap;
    }

    /**
     *
     * @param systemId Ид Системы заводиться в сервисе таймингов
     * @param eventId Ид события
     * @param p24ref Уникальный идентификатор события
     * @param eventTime Дата начала
     * @param ldap ЛДАП сотрудка(если транзакция обучающая)
     * @param user_id Ид пользователя(необходимо для регистрации платежей)
     */
    public P24Event(String systemId, String eventId, String p24ref, Date eventTime, String ldap, Integer user_id) {
        this(systemId, eventId, p24ref, eventTime, ldap);
        this.user_id = user_id.toString();
    }

    /**
     *
     * @param systemId Ид Системы заводиться в сервисе таймингов
     * @param eventId Ид события
     * @param p24ref Уникальный идентификатор события
     * @param eventTime Дата начала
     * @param endTime Дата окончания
     * @param ldap ЛДАП сотрудка(если транзакция обучающая)
     */
    public P24Event(String systemId, String eventId, String p24ref, Date eventTime, Date endTime, String ldap) {
        this(systemId, eventId, p24ref, eventTime, ldap);
        this.endTime = endTime;
    }

    /**
     *
     * @param systemId Ид Системы заводиться в сервисе таймингов
     * @param eventId Ид события
     * @param p24ref Уникальный идентификатор события
     * @param eventTime Дата начала
     * @param endTime Дата окончания
     * @param ldap ЛДАП сотрудка(если транзакция обучающая)
     * @param status Статус prp-Создан cmt-Обработан err-ошибка (Если возможно необходима фиксация)
     */
    public P24Event(String systemId, String eventId, String p24ref, Date eventTime, Date endTime, String ldap, String status) {
        this(systemId, eventId, p24ref, eventTime, ldap);
        this.endTime = endTime;
        this.status = status;
    }

    /**
     * @return Дата окончания
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * @param endTime Дата окончания
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * @return Ид события
     */
    public String getEventId() {
        return eventId;
    }

    /**
     * @param eventId Ид события
     */
    public void setEventId(String eventId) {
        this.eventId = eventId;
    }

    /**
     * @return Дата начала
     */
    public Date getEventTime() {
        return eventTime;
    }

    /**
     * @param eventTime Дата начала
     */
    public void setEventTime(Date eventTime) {
        this.eventTime = eventTime;
    }

    /**
     * @return ЛДАП сотрудка(если транзакция обучающая)
     */
    public String getLdap() {
        return ldap;
    }

    /**
     * @param ldap ЛДАП сотрудка(если транзакция обучающая)
     */
    public void setLdap(String ldap) {
        this.ldap = ldap;
    }

    /**
     * @return Уникальный идентификатор события
     */
    public String getP24ref() {
        return p24ref;
    }

    /**
     * @param p24ref Уникальный идентификатор события
     */
    public void setP24ref(String p24ref) {
        this.p24ref = p24ref;
    }

    /**
     * @return Ид Системы заводиться в сервисе таймингов
     */
    public String getSystemId() {
        return systemId;
    }

    /**
     * @param systemId Ид Системы заводиться в сервисе таймингов
     */
    public void setSystemId(String systemId) {
        this.systemId = systemId;
    }

    /**
     * @return Статус prp-Создан cmt-Обработан err-ошибка (Если возможно необходима фиксация)
     */
    public String getStatus() {
        return status;
    }

    /**
     * @param status Статус prp-Создан cmt-Обработан err-ошибка (Если возможно необходима фиксация)
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * @return Ид пользователя(необходимо для регистрации платежей)
     */
    public String getUser_id() {
        return user_id;
    }

    /**
     * @param user_id Ид пользователя(необходимо для регистрации платежей)
     */
    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }
}